package com.sky.d_thread;

/**
 * 读写重排
 * 有追求的前提是有一颗无畏的心态，需要有勇气
 * @Author:hjt
 */
public class OrderExample {

	int a = 0;
	boolean flag = false;
	
	public void writer(){
		a = 1;
		flag = true;
	}
	
	public void reader(){
		if(flag){
			int b = a + 1;
			System.out.println(b);
		}
	}
	
	public static void main(String[] args) {
		OrderExample o = new OrderExample();
		o.writer();
		o.reader();
	}
	/**
	 在单一线程中，先执行writer方法，在执行reader  b的结果是2
	 如果在多线程中，b的结果可能是1：
	 	一个线程在执行writer方法的时候，发生重排，flag = true比a = 1先执行
	 	另一个线程执行reader方法，判断flag是true，执行int b = a + 1的时候，a = 1可能还没有执行
	 */
}
